This invention provides a system and process for distributing storage device semantics throughout a virtual storage network.
Computer systems using conventional disks and storage subsystems incur substantial system and storage management expenses because of tight coupling between the computer systems and the storage subsystems. Storage virtualization addresses this problem by decoupling computer system management from storage management. Distributed storage virtualization schemes offer further scaling advantages, including the ability to scale to multiple computer systems, multiple storage systems, and large storage networks with adequate performance.
The distributed virtual storage networks generally employ Small Computer System Interface (SCSI) semantics to direct interactions between components in the networks. Currently, the predominant forms of SCSI are termed SCSI-2 and SCSI-3. Among its features, SCSI-2 permits enhanced SCSI device data transfer methodologies while maintaining the asynchronous transfer of data, instructions, and messages from earlier SCSI implementations. Developers have further updated the SCSI-2 standard to produce the SCSI-3 standard. For example, SCSI-3 command protocols do not have dependencies on a physical interconnection medium, allowing the SCSI-3 command operations and data flows over a serial bus such as a Fibre Channel interconnect medium. The use of the SCSI interface is advantageous because numerous communication channels and components are currently adapted for use on a SCSI type network. Another key advantage of using SCSI is that the operating system driver stacks exist almost universally for SCSI devices.
In the SCSI protocols, transactions between the components use SCSI command set semantics. For example, within the SCSI protocol, a sender (i.e., the component that initiates a transaction) is allowed to perform a fixed number of other transfers before the sender stalls waiting for an acknowledgment of the transaction. The full extent of SCSI semantics, also called state, is beyond the scope of this disclosure, but is described in the relevant ANSI/ISO T10 standards (SCSI-3) and X3T9 standards (SCSI-2). In a network having multiple storage containers, the SCSI device and logical unit number (LUN) semantics identify a particular storage device and particular segments in the device, as needed for virtual storage. Similarly, implementing the distributed virtualization storage networks generally necessitates the further distribution of SCSI semantics for the virtual disk.
To avoid the distribution of SCSI semantics, some of the known virtual storage systems use block device semantics in operating system driver stacks, thereby minimizing the need for SCSI behavior. Other known virtual storage systems avoid distributing SCSI input/output (I/O) semantics altogether through the use of centralized SCSI storage devices, designated by LUNS. Alternatively, designers may develop a distributed virtual storage network that operates without using SCSI device semantics to present virtual disks to hosts. This configuration, however, would require inventing a new, presently unknown interface model and implementing this model throughout all of the elements in each supported host system.
So far as it is known, the notion of distributing SCSI device semantics to accompany the distributed table-driven virtual mapping is not provided for by an established or developing storage network. Accordingly, there exists a current need for a solution to distribute SCSI semantics in a virtual storage network.
Briefly, the present invention provides a system and method for distributing SCSI semantics throughout a virtual storage network. Specifically, the present invention distributes the SCSI semantics through multiple parallel mapping agents and a separate controller. This configuration allows performance-sensitive distribution of SCSI semantics to be parallelized and optimized for performance in the agents. Furthermore, the control and management of the SCSI semantics is centralized in a controller chosen for optimal cost, management, and other implementation practicalities. In this design, the SCSI semantics are stored in the controller, and portions of the SCSI semantics are distributed to the mapping agents as cached, read-only information. By storing most or all of the SCSI semantics in volatile memory residing in the agents, the system substantially reduces the cost and complexity of implementing the SCSI semantic distribution. The controller is responsible for persistent storage of the SCSI semantics, thereby consolidating the costs and management for the SCSI semantics in a single component. The agents preferably interact with only the controller and not with other mapping agents, thereby improving the scalability of virtual storage systems and their tolerance of component failures.
Within a preferred embodiment of the SCSI distribution system, key SCSI semantic information is distributed to the agents while infrequently used semantic information is centralized in the controller. One value of this approach is that SCSI semantics that are complex, but infrequently used, may be centralized in the controller. Likewise, SCSI commands that cannot be processed by the agents are preferably forwarded to the controller.
In another embodiment, the controller sends a intermittent signal to the agents. If one of the agents does not receive the signal, the agent modifies the SCSI semantics to prevent I/O operations to an associated virtual disk.